#!/usr/bin/envpython
# -*-coding:UTF-8-*-
'''
@File    :   getRoleSelectedMenu_byid.py
@Contact :   308711822@qq.com
@License :   (C) Copyright 2021-2225, Personal exclusive right.

@Modify Time      @Author    @Version    @Desciption
------------      -------    --------    -----------
2023/5/30 16:37   小钟同学      1.0         None
'''

from infirmary_admin_src.infirmary_common.infirmary_controller import IBaseController
from infirmary_admin_src.infirmary_common.infirmary_controller.rest_controller_with_depends import \
    RestControllerWithDepends
from fastapi import Request, Depends, Path

from infirmary_admin_src.infirmary_smart_admin.infirmary_biz.infirmary.businesses.schemas import SchemaBase
from infirmary_admin_src.infirmary_smart_admin.infirmary_biz.system.role.services import RoleBusinesses
from infirmary_admin_src.infirmary_smart_admin.infirmary_utils.convert2_help import convert_dict_to_camel_case
from infirmary_admin_src.infirmary_smart_admin.infirmary_utils.tree_helper import generate_tree



class XParam(SchemaBase):
    '''
    账号密码登录参数
    '''
    id: int = Path(..., title="Id", description='Id')

class IController(IBaseController):
    '''
    定制相关约束检测函数逻辑步序
    '''

    def __init__(self, *, request: Request,
                 schema_param: XParam = Depends(),
                 ):
        super().__init__(request=request)
        # 入参参数
        # 入参参数
        self.schema_param = schema_param


@RestControllerWithDepends()
class SystemGetRoleSelectedMenuByidController(IController):

    def business_login(self):
        pass

        # 菜单树列表信息

        menuList = RoleBusinesses.get_admin_sys_role_menu_info()
        if menuList:
            menuList = [convert_dict_to_camel_case(v,keepkey=['contextMenuId', 'menuType',
                                                            'menuId', 'parentId'],
                                                   ) for v in menuList]
        return {
            'roleId':1,
            'menuTreeList':generate_tree(menuList, 0) if menuList else [],
            'selectedMenuId':RoleBusinesses.get_admin_sys_role_menu_ids_byroleid(self.schema_param.id)
        }
